<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Boot from Host (INT6300)</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><meta name="keywords" content="Intellon, Atheros, Qualcomm, HomePlug, powerline, communications, INT6000, INT6300, INT6400, AR7400, AR7420"><link rel="home" href="index.html" title="Qualcomm Atheros Open Powerline Toolkit"><link rel="up" href="ch04.html" title="Chapter 4.  Firmware"><link rel="prev" href="ch04s12.html" title="Boot from Host (INT6000)"><link rel="next" href="ch04s14.html" title="Boot from Host (INT6400)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">
			Boot from Host (INT6300)
			</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s12.html">Prev</a> </td><th width="60%" align="center">Chapter 4. 
		Firmware 
		</th><td width="20%" align="right"> <a accesskey="n" href="ch04s14.html">Next</a></td></tr></table><hr></div><div class="section" title="Boot from Host (INT6300)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="firmware-6300-boot"></a>
			Boot from Host (INT6300)
			</h2></div></div></div><p>
			The boot-from-host operation downloads <acronym class="acronym">SDRAM</acronym> configuration information, runtime parameters and runtime firmware from a local host and starts firmware execution. This method is initiated by the device bootloader after reset reset if the device has no flash memory, blank flash memory or corrupted flash memory. The method requires the bootloader aware software running on the local host to detect and service <code class="constant">VS_HOST_ACTION</code> messages from the device.
			</p><p>
			The <span class="productname">INT6300</span>™ boot-from-host method is similar to the <span class="productname">INT6000</span>™ method but it has an extra stage to download <acronym class="acronym">SDRAM</acronym> configuration parameters and it uses <code class="constant">VS_WR_MEM</code> messages to download runtime parameters and firmware instead of <code class="constant">VS_WR_MOD</code> messages. The <code class="constant">VS_WR_MEM</code> messages write directly to <acronym class="acronym">SDRAM</acronym> and an <code class="constant">VS_ST_MAC</code> message is needed to start firmware execution. Once the firmware is running, another method is used to write runtime parameters and firmware to flash memory.
			</p><p>
			The <span class="productname">INT6300</span>™ does not have a unique hardware address until runtime firmware starts and assigns one from the runtime parameter block. Until that time, the bootloader will accept messages addressed to <code class="constant">00:B0:52:00:00:01</code>. In addition, the bootloader does not know the hardware address of the local host and so it addresses <code class="constant">VS_HOST_ACTION</code> messages to <code class="constant">FF:FF:FF:FF:FF:FF</code>; however, these messages are not transmitted over the powerline.
			</p><div class="figure"><a name="idp21427120"></a><p class="title"><b>Figure 4.5. 
				boot-from-host (INT6300)
				</b></p><div class="figure-contents"><pre class="programlisting">

         INT6300                             LOCAL-HOST
        [01] |                                    |
        [02] |-------- VS_HOST_ACTION.IND -------&gt;| [03]
        [05] |&lt;------- VS_HOST_ACTION.RSP --------| [04]
             |                                    |
        [07] |&lt;------- VS_SET_SDRAM.REQ ----------| [06]
        [07] |-------- VS_SET_SDRAM.CNF ---------&gt;| [08]
             |                                    | [09]
        [10] |&lt;------- VS_WR_MEM.REQ -------------| [10]
        [10] |-------- VS_WR_MEM.CNF ------------&gt;| [10]
        [10] |&lt;-----------------------------------| [10]
        [10] |-----------------------------------&gt;| [10]
             |                                    |
        [11] |&lt;------- VS_WR_MEM.REQ -------------| [11]
        [11] |-------- VS_WR_MEM.CNF ------------&gt;| [11]
        [11] |&lt;-----------------------------------| [11]
        [11] |-----------------------------------&gt;| [11]
             |                                    |
        [13] |&lt;------- VS_ST_MAC.REQ -------------| [12]
        [14] |-------- VS_ST_MAC.CNF ------------&gt;| [15]

 </pre></div></div><br class="figure-break"><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
					The bootloader automatically starts after device reset and attempts to read the runtime firmware image from flash memory, write it into <acronym class="acronym">SDRAM</acronym> and start execution. If it succeeds then normal operation begins and no further action is required. If it fails, for any reason, then the bootloader starts the boot-from-host process.
					</p></li><li class="listitem"><p>
					The bootloader broadcasts <code class="constant">VS_HOST_ACTION.IND</code> with <code class="varname">HOST_ACTION_REQ</code> set to <code class="constant">0x04</code> to indicate that configuration is required. The destination address is <code class="constant">FF:FF:FF:FF:FF:FF</code> and the source address is <code class="constant">00:B0:52:00:00:01</code> as explained above. This message is sent every <code class="constant">10</code> seconds which differs from that of other chips. 
					</p></li><li class="listitem"><p>
					The host receives the <code class="constant">VS_HOST_ACTION.IND</code> message and inspects the HOST_ACTION_REQ field to determine the action requested. On a single-host system,  the local host must elect to service the request or the device will not start. On a multi-host system,  one of the hosts must elect to service the request of the device will not start.
					</p></li><li class="listitem"><p>
					The host sends a <code class="constant">VS_HOST_ACTION.RSP</code> message to the device to indicate an ability and willingness to service the request. The MSTATUS field is set to <code class="constant">0x00</code> for affirmative and <code class="constant">0x01</code> for negative. 
					</p></li><li class="listitem"><p>
					The bootloader receives the <code class="constant">VS_HOST_ACTION.RSP</code> from the host and inspects the MSTATUS field. On affirmative response, the bootloader stops broadcasting <code class="constant">VS_HOST_ACTION.IND</code> and waits indefinitely for <acronym class="acronym">SDRAM</acronym> configuration information from the host. 
					</p></li><li class="listitem"><p>
					The host sends a <code class="constant">VS_SET_SDRAM.REQ</code> message to the device containing an SDRAM configuration block and the block checksum. 
					</p></li><li class="listitem"><p>
					The bootloader receives the <code class="constant">VS_SET_SDRAM.REQ</code>, validates the content, initializes <acronym class="acronym">SDRAM</acronym> parameters and sends a <code class="constant">VS_SET_SDRAM.CNF</code> message to the servicing host to indicate either success or failure. 
					</p></li><li class="listitem"><p>
					The local host receives the <code class="constant">VS_SET_SDRAM.CNF</code> and inspects the <code class="varname">MSTATUS</code> field for success or failure. Assuming success, the local host waits indefinitely for further requests from the device. 
					</p></li><li class="listitem"><p>
					The local host determines which parameter block and firmware image to download. In some cases there may be no choice. In other cases, there may be a choice between default and custom software or between current and upgraded software. This is a principle design issue to consider. 
					</p></li><li class="listitem"><p>
					The local host downloads the firmware image to the device by sending <code class="constant">VS_WR_MEM.REQ</code> messages to the device and waiting for a <code class="constant">VS_WR_MEM.CNF</code> messages from the device after each request. Each message contains an image segment, the memory offset, the segment length and the checksum used to monitor and manage download progress. It a single transaction fails, the local host should detect it and repeat it.
					</p></li><li class="listitem"><p>
					The local host downloads a parameter block to the device by sending <code class="constant">VS_WR_MEM.REQ</code> messages to the device and waiting for a <code class="constant">VS_WR_MEM.CNF</code> message from the device after each request. Each message contains an image segment,  the memory offset, the segment length and the checksum used to monitor and manage download progress. If a single transaction fails, the local host should detect it and repeat it. 
					</p></li><li class="listitem"><p>
					The local host starts firmware execution by sending a <code class="constant">VS_ST_MAC.REQ</code> message to the device. The message contains the firmware start address.  
					</p></li><li class="listitem"><p>
					The bootloader receives the <code class="constant">VS_ST_MAC.REQ</code> from the local host, validates the content.
					</p></li><li class="listitem"><p>The device sends a <code class="constant">VS_ST_MAC.CNF</code> message to indicate an ability or willingness to start firmware execution. The device immediately starts firmware execution which relinquishes device control to the firmware. It can take <code class="constant">5</code> to <code class="constant">10</code> seconds for the firmware to start.  
					</p></li><li class="listitem"><p>
					The host receives the <code class="constant">VS_ST_MAC.CNF</code> message from the device, inspects the <code class="varname">MSTATUS</code> field and acts accordingly. An afffirmative indication means that the firmware will start executing on the device in <code class="constant">5</code> to <code class="constant">10</code> seconds. Once the firmware starts, future messages will contain the unique hardware address for the device.
					</p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s12.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04s14.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">
			Boot from Host (INT6000)
			 </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 
			Boot from Host (INT6400)
			</td></tr></table></div></body></html>
